package com.ruoyi.business.domain;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * 会员模块 member
 *
 * @author 石涛
 * &#064;date  2023-11-02
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("会员模块")
public class Member extends BaseEntity {

    /**
     * 会员id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "会员id")
    private Long id;

    /**
     * 会员名称
     */
    @Excel(name = "会员名称")
    @ApiModelProperty(value = "会员名称")
    private String name;

    /**
     * 类型: 0：会员 1: 单课
     */
    @Excel(name = "类型: 0：会员 1: 单课")
    @ApiModelProperty(value = "类型: 0：会员 1: 单课")
    private String type;

    /**
     * 课程类型: 查询字典信息，type为会员时只能为团课
     */
    @Excel(name = "课程类型: 查询字典信息")
    @ApiModelProperty(value = "课程类型: 查询字典信息")
    private String courseType;
    /**
     * 会员类型: 查询字典信息， type为会员时必填
     */
    @Excel(name = "会员类型: 查询字典信息， type为会员时必填")
    @ApiModelProperty(value = "会员类型: 查询字典信息， type为会员时必填")
    private String memberType;

    /**
     * 会员类型: 查询字典信息， type为会员时必填
     */
    @Excel(name = "会员类型: 查询字典信息， type为会员时必填")
    @ApiModelProperty(value = "会员类型: 查询字典信息， type为会员时必填")
    @TableField(exist = false)
    private String memberName;
    /**
     * 会员时长：根据会员类型，type为会员时必填
     */
    @Excel(name = "会员时长：根据会员类型，type为会员时必填")
    @ApiModelProperty(value = "会员时长：根据会员类型，type为会员时必填")
    private Long memberDuration;

    /**
     * 购买次数：单课时必填
     */
    @Excel(name = "购买次数：单课时必填")
    @ApiModelProperty(value = "购买次数：单课时必填")
    private Long orderNumber;

    /**
     * 绑定用户id
     */
    @Excel(name = "绑定用户id")
    @ApiModelProperty(value = "绑定用户id")
    private Long userId;

    /**
     * 绑定用户昵称
     */
    @Excel(name = "绑定用户昵称")
    @ApiModelProperty(value = "绑定用户昵称")
    private String userName;

    /**
     * 会员卡使用开始时间
     */
    @Excel(name = "会员卡使用开始时间")
    @ApiModelProperty(value = "会员卡使用开始时间")
    private Date useStartTime;

    /**
     * 会员卡使用结束时间
     */
    @Excel(name = "会员卡使用结束时间")
    @ApiModelProperty(value = "会员卡使用结束时间")
    private Date useEndTime;

    /**
     * 会员卡使用次数
     */
    @Excel(name = "会员卡使用次数")
    @ApiModelProperty(value = "会员卡使用次数")
    private Long useNumber;

    /**
     * 卡券背景色
     */
    @Excel(name = "卡券背景色")
    @ApiModelProperty(value = "卡券背景色")
    private String background;

    /**
     * 卡券背景色
     */
    @Excel(name = "卡券背景色")
    @ApiModelProperty(value = "卡券背景色")
    private String color;

    /**
     * 卡券背景图
     */
    @Excel(name = "卡券背景图")
    @ApiModelProperty(value = "卡券背景图")
    private String cover;

    /**
     * 状态（0: 待使用 1: 使用中 2:已用完）
     */
    @Excel(name = "状态（0: 待使用 1: 使用中 2:已用完）")
    @ApiModelProperty(value = "状态（0: 待使用 1: 使用中 2:已用完）")
    private String status;

    /**
     * 开启状态状态（0: 开启 1: 禁用）
     */
    @Excel(name = "状态（0: 开启 1: 禁用）")
    @ApiModelProperty(value = "状态（0: 开启 1: 禁用）")
    private String enable;

    /**
     * 剩余天数
     */
    @Excel(name = "剩余天数")
    @ApiModelProperty(value = "剩余天数")
    private Long remainNumber;

    @Getter
    private String createBy;

    @Getter
    private String updateBy;


    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

}
